package co.gov.medellin.ssti.sub.model.service.impl;

import java.util.Collection;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import co.gov.medellin.ssti.sub.model.dao.BeneficioDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.BeneficioService;
import co.gov.medellin.ssti.sub.model.vo.Beneficiario_AtributoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficioOtorgadoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficioVO;
import co.gov.medellin.ssti.sub.model.vo.UsuarioxSedeVO;

@Service
@Transactional
public class BeneficioServiceImpl implements BeneficioService {
	@Autowired
	BeneficioDAO beneficioDAOImpl2;

	public boolean isExisteBeneficiario(Long codeBeneficiario,
			Long codeSubprograma) {
		try {
			return beneficioDAOImpl2.isExisteBeneficiario(codeBeneficiario,
					codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findCostoBeneficio(Long codeBeneficio) {
		try {
			return beneficioDAOImpl2.findCostoBeneficio(codeBeneficio);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findCostoBOT(Long codeBot) {
		try {
			return beneficioDAOImpl2.findCostoBOT(codeBot);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findFechaBOT(Long codeBot) {
		try {
			return beneficioDAOImpl2.findFechaBOT(codeBot);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findTercero(Long codeBot) {
		try {
			return beneficioDAOImpl2.findTercero(codeBot);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findTipoBeneficio(Long codeBot) {
		try {
			return beneficioDAOImpl2.findTipoBeneficio(codeBot);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public int findDisponibilidad(Long codeSede, Long codeSubprograma) {
		try {
			return beneficioDAOImpl2.findDisponibilidad(codeSede,
					codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean otorgarBeneficios(Long codeSede, Long codeSubprograma,
			Long codeBeneficiario,
			List<Beneficiario_AtributoVO> lListaInsertar, String tercero,
			int i, String[] strArrIns, String costoBeneficio,
			String fechaBeneficio) {
		try {
			return beneficioDAOImpl2.otorgarBeneficios(codeSede,
					codeSubprograma, codeBeneficiario, lListaInsertar, tercero,
					i, strArrIns, costoBeneficio, fechaBeneficio);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean otorgarBeneficiosEmpresa(Long codeSede,
			Long codeSubprograma, Long codeBeneficiario,
			List<Beneficiario_AtributoVO> lListaInsertar, String tercero,
			int i, String[] strArrIns, String costoBeneficio,
			String fechaBeneficio, String tipoBeneficio) {
		try {
			return beneficioDAOImpl2
					.otorgarBeneficiosEmpresa(codeSede, codeSubprograma,
							codeBeneficiario, lListaInsertar, tercero, i,
							strArrIns, costoBeneficio, fechaBeneficio,
							tipoBeneficio);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean otorgarBeneficios(Long codeSede, Long codeSubprograma,
			Long codeBeneficiario,
			List<Beneficiario_AtributoVO> lListaInsertar, String tercero,
			int i, String[] strArrIns, String costoBeneficio,
			String fechaBeneficio, String tipoBeneficio,
			String codeHechoVictimizante) {
		try {
			return beneficioDAOImpl2.otorgarBeneficios(codeSede,
					codeSubprograma, codeBeneficiario, lListaInsertar, tercero,
					i, strArrIns, costoBeneficio, fechaBeneficio,
					tipoBeneficio, codeHechoVictimizante);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean updateBOT(Long codeSede, Long codeSubprograma,
			Long codeBeneficiario,
			List<Beneficiario_AtributoVO> lListaInsertar, String tercero,
			int i, String[] strArrIns, String costoBeneficio,
			String fechaBeneficio, Long codeBot, Long codeSedeOld,
			String tipoBot, Long codigoHechoVictimizante) {
		try {
			return beneficioDAOImpl2.updateBOT(codeSede, codeSubprograma,
					codeBeneficiario, lListaInsertar, tercero, i, strArrIns,
					costoBeneficio, fechaBeneficio, codeBot, codeSedeOld,
					tipoBot, codigoHechoVictimizante);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findSedeBOT(String codeBot) {
		try {
			return beneficioDAOImpl2.findSedeBOT(codeBot);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<BeneficioVO> findDetallesBeneficios(Long codeBeneficio,
			Long codeSubprograma) {
		try {
			return beneficioDAOImpl2.findDetallesBeneficios(codeBeneficio,
					codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean deleteBOT(String codeBOT) {
		try {
			return beneficioDAOImpl2.deleteBOT(codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean validarDeleteBOT(String groupUserName, String userName,
			Long codeBOT) {
		try {
			return beneficioDAOImpl2.validarDeleteBOT(groupUserName, userName,
					codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean validarEditBOT(String groupUserName, String userName,
			Long codeBOT) {
		try {
			return beneficioDAOImpl2.validarEditBOT(groupUserName, userName,
					codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean renewBeneficio(Long codeSubpro, Long codeBeneficiario,
			Long codeOldSede, Long codeNewSede, String fechaOtorgamiento) {
		try {
			return beneficioDAOImpl2.renewBeneficio(codeSubpro,
					codeBeneficiario, codeOldSede, codeNewSede,
					fechaOtorgamiento);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<UsuarioxSedeVO> findUsuarioxBeneficio(String idben) {
		try {
			return beneficioDAOImpl2.findUsuarioxBeneficio(idben);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String findPrograma(String codeSubprograma) {
		try {
			return beneficioDAOImpl2.findPrograma(codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean isEmpresaBeneficiario(Long codeEmpresa, Long codeSubprograma) {
		try {
			return beneficioDAOImpl2.isEmpresaBeneficiario(codeEmpresa,
					codeSubprograma);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public BeneficioOtorgadoVO findBOT(Long codeBOT) {
		try {
			return beneficioDAOImpl2.findBOT(codeBOT);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}
}
